package com.gtapps.user.service;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 *
 * 定一个一个切面类 暂时取消
 */
//@Aspect
//@Component
public class QueryAspect {


//    @Before("execution(* com.gtapps.user.service.saveUser(..))")
//    public void takeSeats() {
//        System.out.println("保存前做什么？？？？");
//    }

//
//    /**
//     * 开会之前--手机调成静音
//     */
//    @Before("execution(* com.jpeony.spring.ConferenceServiceImpl.conference(..))")
//    public void silenceCellPhones() {
//        System.out.println("手机调成静音");
//    }
//
//    /**
//     * 开会之后--写会议总结报告
//     */
//    @After("execution(* com.jpeony.spring.ConferenceServiceImpl.conference(..))")
//    public void summary() {
//        System.out.println("写会议总结报告");
//    }
    /**
     * =========================================================================
     * 从上面的执行代码可以看出切点execution表达式内容都是一样，
     * 我们可以通过@Pointcut进行优化。
     * =========================================================================
     */

    /**
     * 通过注解@Pointcut定义切点，conference()只是一个标识，无所谓是什么，
     * 方法中内容本身也是空的，使用该切点的地方直接通过标识conference()引用切点表达式。
     */
    @Pointcut("execution(* com.gtapps.user.service.UserServiceImpl.saveUser(..))")
    public void saveUser() {}

    /**
     * 开会之前--找个位置坐下
     */
    @Before("saveUser()")
    public void takeSeats() {
        System.out.println("保存前");
    }

    /**
     * 开会之前--手机调成静音
     */
    @Before("saveUser()")
    public void silenceCellPhones() {
        System.out.println("继续保存前");
    }

    /**
     * 开会之后--写会议总结报告
     */
    @After("saveUser()")
    public void summary() {
        System.out.println("保存后");
    }
}




